//
//  UITableViewCell+Init.m
//  TravelClient
//
//  Created by leo on 15/11/29.
//  Copyright © 2015年 leo. All rights reserved.
//

#import "UITableViewCell+Init.h"

@implementation UITableViewCell(Init)

- (instancetype)initReuseIdentifier:(NSString *)reuseIdentifier {
    
    return [self initReuseIdentifier: reuseIdentifier index: 0];
}


- (instancetype)initReuseIdentifier:(NSString *)reuseIdentifier index:(NSInteger)index {
    
    return [self initReuseIdentifier: reuseIdentifier index: 0 nibName: NSStringFromClass([self class])];
}


- (instancetype)initReuseIdentifier:(NSString *)reuseIdentifier index:(NSInteger)index nibName:(NSString*)nibName {
    
    if (nibName == nil || [nibName isEqualToString: NSStringFromClass([UITableViewCell class])]) {
        self = [self initWithStyle: UITableViewCellStyleDefault reuseIdentifier: reuseIdentifier];
    }
    else {
        NSArray *cellItems = [[NSBundle mainBundle] loadNibNamed: nibName owner:self options:nil];
        
        if (index < cellItems.count) {
            self = cellItems[index];
        }
        else {
            self = [self initWithStyle: UITableViewCellStyleDefault reuseIdentifier: reuseIdentifier];
        }
    }
    
    return self;
}

#pragma mark - Class methods

+ (instancetype)cellFromTableView:(UITableView *)tableView {
    return [self cellFromTableView: tableView reuseIdentifier: nil];
}


+ (instancetype)cellFromTableView:(UITableView *)tableView index:(NSInteger)index {
    
    return [self cellFromTableView: tableView reuseIdentifier: nil index: index];
}

+ (instancetype)cellFromTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseIdentifier {
    return [self cellFromTableView: tableView reuseIdentifier: reuseIdentifier index: 0];
}


+ (instancetype)cellFromTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseIdentifier index:(NSInteger)index {
    return [self cellFromTableView: tableView reuseIdentifier: reuseIdentifier index: index nibName: nil];
}


+ (instancetype)cellFromTableView:(UITableView *)tableView reuseIdentifier:(NSString *)reuseIdentifier index:(NSInteger)index nibName:(NSString *)nibName {
    
    if (reuseIdentifier == nil) {
        reuseIdentifier = [NSString stringWithFormat: @"%@Identifier", NSStringFromClass([self class])];
    }
    
    if (nibName == nil) {
        nibName = NSStringFromClass([self class]);
    }
    
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier: reuseIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initReuseIdentifier: reuseIdentifier index: index nibName: nibName];
    }
    
    return cell;
}
@end
